The invention relates to server systems for use in a network of computers. More specifically, the invention relates to communication between servers.
Client/server systems, in which the server executes one or more applications for a client, are similar to traditional multi-user systems such as UNIX. Graphically, these systems behave similarly to X-WINDOWS, a user interface standard for UNIX systems. A client/server system, such as the commercially available WINFRAME system manufactured by Citrix Systems, Inc. of Ft. Lauderdale, Fla., may include a number of application servers. Each application server may support multi-tasking of several applications that may be requested by a user at a remotely located workstation.
In order to minimize response time, maximize system throughput, and generally give the appearance that the user""s application program is executing at the client, an administrator will often provide a user with access to a number of application servers that host the desired applications and are capable of servicing the user""s requests. However, in order for such a system to operate efficiently, the application servers must dynamically coordinate access to system resources shared among the application servers as well as coordinate access to the application servers by the user. One way in which this is done is selecting one server from the group to act as the xe2x80x9cmaster server.xe2x80x9d The master server is responsible for keeping track of resource usage both by users and application servers. However, as the number of applications servers grows larger, the administrative burden becomes significant, effectively limiting the size of these networks.
The present invention avoids this potential problem.
The present invention relates to a method and apparatus for communication between servers. In one aspect, the invention relates to a multi-server system including a first server and a second server. The first server has a first plurality of subsystems and a first event bus associated with the first plurality of subsystems, the first event bus including a first event delivery object having a first dispatch table and a first transport mechanism associated with the first event delivery object. The second server has a second plurality of subsystems. One of the first plurality of subsystems communicates with one of the second plurality of subsystems by transmitting an event to the first transport mechanism based on an entry in the first dispatch table.
In one embodiment, the first transport mechanism transmits data using TCP/IP. In another embodiment, the first plurality of subsystems includes a transport subsystem. In another embodiment, the transport subsystem is in communication with the second server. In another embodiment, each of the first plurality of subsystems has an associated unique identifier. In another embodiment, one of the first plurality of subsystems creates an event having an identifier unique to the creating subsystem.
In another embodiment, the multi-server system also includes a plurality of system service modules in communication with the first event bus. In another embodiment, one of the first plurality of system service modules includes a subscription management module providing a subscription table. In another embodiment, one of the first plurality of subsystems makes an entry into the subscription table using the subscription management module. In another embodiment, one of the first plurality of system service modules includes a service locator module identifying a server capable of responding to a particular event.
In another embodiment, the second server also include a second event bus associated with the second plurality of subsystems, the second event bus including a second event delivery object and a second transport mechanism associated with the second event delivery object. In another embodiment, the event is transmitted from the first server to the second server using the first transport mechanism, which is in communication with the second transport mechanism. In another embodiment, the communication between the first transport mechanism and the second transport mechanism uses TCP/IP. In another embodiment, one of the second plurality of subsystems includes a transport system. In another embodiment, the transport system of the first server is in communication with the transport system of the second server. In another embodiment, the communication between the transport system of the first server and the transport system of the second server uses TCP/IP.
In another aspect, the invention also relates to a method for communicating among a plurality of networked servers. The method includes the steps of providing a first server with a first plurality of subsystems, providing a second server with a second plurality of subsystems and providing on the first server a transport mechanism in communication with an event delivery object having a dispatch table. The method also includes the steps of receiving on the first server an event from one of the first plurality of subsystems, and transmitting the received event to the transport mechanism and/or a second subsystem in the first plurality of subsystems.
In one embodiment, the step of providing the first plurality of subsystems includes providing a transport subsystem. In another embodiment, the step of providing a second server includes providing an event queue associated with one of the first plurality of subsystems, wherein the event queue is in communication with the event delivery object. In another embodiment, the step of receiving on the first server an event also includes transmitting the received event to the event queue.
In another embodiment, the method also includes the step of generating, by a subsystem, an event for transmission. In another embodiment, the method also includes the step of generating, by a subsystem, an event for transmission, wherein the event has an associated unique identifier. In another embodiment, the method also includes the step of providing a plurality of system service modules in communication with the event delivery object, wherein one of the system service modules includes a subscription table. In another embodiment, the method also includes the step of providing a plurality of system service modules in communication with said event delivery object, one of said system service modules comprising a service locator module. In another embodiment, the method also includes the step of identifying a server capable of responding to a particular event. In another embodiment, the method also includes the step of transmitting the received event from the transport mechanism and/or a second subsystem in the first plurality of subsystems to the second server.
In another embodiment, the method also includes the steps of providing on the second server a transport mechanism in communication with an event delivery object having a dispatch table and receiving on the transport mechanism of the second server the event from said first server. In another embodiment, the method also includes the steps of providing the second plurality of subsystems wherein one of the second plurality of subsystems includes a transport subsystem, and receiving on the transport subsystem of the second server the event from the first server. In another embodiment, the method also includes the step of using TCP/IP when transmitting from the first server to the second server.